Portions of the documentation in this patent document contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyright rights whatsoever.
The present invention relates generally to a system and method for retrieving data. More particularly, the present invention relates to a system and method for retrieving data from any computer system, the data having either known or unknown data storage schemas, using a semantic programming interface that allows programs to be written on abstract, shared objects, the programs representing the semantic specifications for the intended operations, and a semantic bridge to translate the intended operations to executable programs that preserve the original semantics.
The computer systems of the past decade were designed to provide the necessary information for the efficient working of a single organization. As the connectivity between organizations improved, however, the advantages of efficient information exchange between organizations became obvious. The lack of an efficient means of information exchange between the massively interconnected computer systems prevents these advantages from being realized and is a major impediment to growth, even today.
Each organization has a conflicting set of goalsxe2x80x94allow external agencies (EA""s), namely, any user or system located outside of the organization, to get from its system any kind of information the EA""s are permitted to see while preventing the EA""s from getting any information they are not permitted to see. Furthermore, unknown users cannot be given open access to the system to insert, modify or delete the data. If the organization publishes its data storage schema so that EA""s can write their own programs and execute them, it makes it possible for users to get whatever information is available. But it leads to data security problems for the organization and a different kind of problem for the EA""s. The EA""s usually need to gather information of the same kind from a lot of different sources. The EA""s cannot efficiently develop a different set of custom programs for each organization with which they work. Indeed, such a task would be massive and a maintenance nightmare.
Moreover, the present attempts to overcome these problems have not been very successful. For example, the Common Object Request Broker Architecture (CORBA) provides one method of accessing data from remote systems. With CORBA, an Object Model defines common object semantics for specifying the externally visible characteristics of objects in a standard and implementation-independent way. In this model clients request services from objects through a well defined interface specified in an Interface Definition Language (IDL). A client accesses an object by issuing a request to the object. The request is an event, and it carries information including an operation, the object reference of the service provider, and actual parameters (if any). The object reference is an object name that defines an object reliably.
CORBA is disadvantageous for several primary reasons, however. First, users of CORBA objects are limited to the specific operations that have been defined by the creators of the objectsxe2x80x94e.g., they are limited to the specific procedures or methods that have been associated with the CORBA objects. There is no way for a user to add additional procedures to the system. Thus, users are limited in the ways that they can access data due to the fixed functionality of CORBA code. Indeed, the coarse-grained nature and fixed functionality of CORBA code makes it rigid and inflexible.
Second, CORBA objects are accessed using a typical client/server model. The client (e.g., user) code to perform the data access executes locally on the client machine. A CORBA object is accessed by the client code by issuing a request to the object through a remote procedure call (RPC) mechanism. The request is handled by the remote server, which returns results to the client machine. This access mechanism is slow and inefficient due to the number of RPC""s needed whenever data has to be accessed.
Third, CORBA is hard to standardize across an entire application domain. The difficulty stems from the fact that the developers of the CORBA objects and the users of the CORBA objects may be unconnected. To avoid misuse of these objects, there has to be a unanimous agreement on the nature and scope of the methods in the interface. To provide the functionality required of all possible users in all possible deployments of the xe2x80x98standardxe2x80x99 CORBA objects is hugely inefficient (all implementations should provide the same solution in different ways for all possible methods), and provides no real incentives to the developer of the CORBA object. Hence, the advantages to be gained from standardization (such as real write once and run anywhere, abstract programming solutions etc.) will be practically impossible for anything but small self-contained domains.
Enterprise Java Beans (EJB) provides another method of accessing data from remote systems. EJB conceptually divides the interface the EJB server provides for storing state information into two partsxe2x80x94the data side and the client side. The xe2x80x9centity beanxe2x80x9d has a one-to-one relationship with data in tables. The xe2x80x9csession beanxe2x80x9d has a one to one relationship with the client and allows the client to store state information. Accessing data is through the process of xe2x80x9cfindingxe2x80x9d the appropriate entity beans. The xe2x80x9cfinder methods,xe2x80x9d invoked by the client, on the xe2x80x9chomexe2x80x9d object, are passed to the entity beans, by the EJB xe2x80x9ccontainer.xe2x80x9d The finder methods are special purpose methods used to identify the data with which the client wants to work. This is no different from a typical program where the programmer assumes the responsibility for ensuring that the proper relationships for meaningful computations are maintained between participating entities. The relationships are only implicit. The EJB model does not specify the need for more powerful denotations. As a result, a deployed entity bean is static. It cannot service the need for accessing information with differing structural relationships. Thus, the EJB model is only of limited utility.
Similarly, Multi-Tier Distributed Application Services (MIDAS) provides another method of accessing data from remote systems. MIDAS is designed for quickly and easily developing and deploying multi-tier thin-client database applications. MIDAS can access remote data through HyperText Transfer Protocol (HTTP), and other transport methods, however both sides of the application (i.e., client and server) must be pre-programmed and run against known data structures. Thus, like the EJB model, MIDAS is only of limited utility as it cannot be run to access data from databases having unknown storage schemas. Moreover, both the client and server sides of a MIDAS application would have to be rewritten every time the storage schema of the known data structure changed.
Accordingly, there is an unmet need for a general-purpose method for retrieving data from any computer system, the data having either known or unknown data storage schemas, using a semantic programming interface that allows programs to be written on abstract, shared objects. There is also a need for a semantic programming interface that denotes the names and meaningful relationships among data and declares them as methods associated with the objects, thereby allowing users to access the data in any way they want. There is also a need for a method that allows user code to be dynamically built and executed on a server computer. The present invention fulfills these needs.
Briefly stated, the present invention provides a method of accessing data stored on one or more computers, the data on each computer having a data storage schema. In the method, a program is generated to access the data using terms and constructs of a semantic programming interface. The semantic programming interface provides an abstract, object-oriented representation of the data that is independent of the data storage schemas of the data. Mappings of the representation of the data in the semantic programming interface to each of the data storage schemas of the data stored on the one or more computers are created. The data mappings are used to translate the interface-based program into one or more executable programs. The executable programs are run to access the data stored on the one or more computers.
In another embodiment, the present invention provides a method of accessing from a client computer data stored on one or more server computers, the data on each server computer having a data storage schema. In the method, a program is generated at the client computer to access the data using terms and constructs of a semantic programming interface. The semantic programming interface provides an abstract, object-oriented representation of the data that is independent of the data storage schemas of the data. Mappings of the representation of the data in the semantic programming interface to each of the data storage schemas of the data stored on the one or more server computers are created. The interface-based program is transmitted from the client computer to the one or more server computers. The interface-based program is translated into one or more executable programs using the data mappings at the one or more server computers. The executable programs are run on the one or more server computers to access the data from the one or more server computers. The data accessed from the one or more server computers is then returned to the client computer.
In yet another embodiment, the present invention provides a method for specifying a semantic programming interface for use in accessing data stored on one or more computers. In the method, computationally meaningful relationships between the data and computationally meaningful groupings of the data are identified. The data are represented as objects, each object having associated method. The computationally meaningful relationships and computationally meaningful groupings are declared as methods associated with the objects.
In yet another embodiment, the present invention provides a method for executing on a server computer a source program written on a client computer. In the method, the source program is transmitted from the client computer to the server computer along with an identification of a program domain for which the source program is written. The source program is stored on the server computer. A program loader capable of loading classes in the program domain and the code in the source program is instantiated on the server computer. The source program is compiled on the server computer and the compiled program is loaded using the program loader. The compiled program is then run on the server computer.
Finally, in yet another embodiment, the present invention provides a method of creating and executing one or more programs on a client computer for accessing data from one or more program domains, the data stored on one or more server computers. In the method, the one or more target program domains and the one or more target server computers of interest are identified. Code is generated to access the data from the one or more server computers (requests) using terms and constructs of a semantic programming interface, the semantic programming interface providing an abstract, object-oriented representation of the data that is independent of the data storage schema of the data. Code is also generated to handle any output received in response to the requests (response handlers). The requests and response handlers are combined to form chores. The chores are then queued for execution.